-- 评论功能模块
local lrSDK = require("老狼孩插件懒人免ROOT无障碍版")
local cr = require("cr")
local app_config = require("app_config")
local time_tracker = require("time_tracker")

local comment = {}

-- 执行评论功能
function comment.发表评论()
    local current_app = app_config.phoenix_read
    
    lrSDK.日志类_调试输出("开始执行评论功能")
    
    -- 点击评论按钮
    lrSDK.日志类_调试输出("尝试点击评论按钮")
    -- 明确使用depth、class_name、packageName和id创建节点
    local 评论按钮 = depth(current_app.elements.comment_button.depth)
                  :className(current_app.elements.comment_button.class_name)
                  :packageName(current_app.package_name)
                  :id(current_app.elements.comment_button.id)
    
    lrSDK.日志类_调试输出("评论按钮节点信息: depth=" .. current_app.elements.comment_button.depth .. 
                        ", class=" .. current_app.elements.comment_button.class_name .. 
                        ", id=" .. current_app.elements.comment_button.id)
    
    local 点击结果 = lrSDK.节点类_找节点(评论按钮, true, 3000)  -- 增加查找时间到3秒
    if not 点击结果 then
        lrSDK.日志类_调试输出("未找到评论按钮，尝试使用遍历点击")
        -- 如果直接查找失败，尝试使用遍历点击
        点击结果 = lrSDK.节点类_遍历节点点击(评论按钮)
        
        if not 点击结果 then
            lrSDK.日志类_调试输出("遍历点击也失败，评论功能执行失败")
            return false
        end
    end
    
    lrSDK.日志类_调试输出("已点击评论按钮，等待评论区加载")
    cr.等待(2000)  -- 等待评论区加载，增加等待时间
    
    -- 这里可以添加浏览评论区的代码，比如上下滑动浏览
    local width, height = cr.获取屏幕分辨率()
    local params = cr.计算滑动参数(width, height)
    
    -- 向下滑动浏览评论
    lrSDK.日志类_调试输出("向下滑动浏览评论")
    -- 使用cr工具中的向上滑动函数
    cr.向上滑动()
    
    cr.等待(math.random(1000, 2000))  -- 随机等待1-2秒
    
    -- 再次向下滑动
    lrSDK.日志类_调试输出("再次向下滑动浏览评论")
    cr.向上滑动()
    
    cr.等待(math.random(1000, 2000))  -- 随机等待1-2秒
    
    -- 返回视频页面
    lrSDK.触控类_模拟物理按键(4)  -- 使用返回键退出评论区
    cr.等待(1000)
    
    lrSDK.日志类_调试输出("评论功能执行成功")
    return true
end

-- 输入评论功能
function comment.输入评论(评论内容)
    local current_app = app_config.phoenix_read
    评论内容 = 评论内容 or "很喜欢这个视频，非常精彩！"  -- 默认评论内容
    
    lrSDK.日志类_调试输出("开始执行输入评论功能")
    
    -- 先向上滑动一次
    lrSDK.日志类_调试输出("执行向上滑动")
    -- 直接使用cr.向上滑动()函数，而不是手动计算参数
    cr.向上滑动()
    
    cr.等待(1500)  -- 等待滑动结束
    
    -- 直接使用原始节点信息查找评论按钮，不依赖config
    lrSDK.日志类_调试输出("尝试使用原始节点信息查找评论按钮")
    local 评论按钮 = depth(7)
                  :className("android.widget.LinearLayout")
                  :packageName("com.phoenix.read")
                  :id("com.phoenix.read:id/bma")
    
    local 点击结果 = lrSDK.节点类_找节点(评论按钮, true, 3000)
    if not 点击结果 then
        lrSDK.日志类_调试输出("未找到评论按钮，尝试使用遍历点击")
        点击结果 = lrSDK.节点类_遍历节点点击(评论按钮)
        
        if not 点击结果 then
            lrSDK.日志类_调试输出("遍历点击评论按钮失败，直接尝试查找输入框入口")
        end
    end
    
    cr.等待(1500)  -- 等待评论区或输入框加载
    
    -- 查找输入框入口并点击
    lrSDK.日志类_调试输出("尝试查找并点击输入框入口")
    local 输入框入口 = depth(4)
                    :className("android.widget.TextView")
                    :packageName("com.phoenix.read")
                    :id("com.phoenix.read:id/f0z")
    
    local 入口点击结果 = lrSDK.节点类_遍历节点点击(输入框入口) -- 使用遍历节点点击
    if not 入口点击结果 then
        lrSDK.日志类_调试输出("未找到输入框入口，尝试使用找节点方式")
        入口点击结果 = lrSDK.节点类_找节点(输入框入口, true, 2000)
        
        if not 入口点击结果 then
            lrSDK.日志类_调试输出("仍未找到输入框入口，输入评论功能执行失败")
            return false
        end
    else
        lrSDK.日志类_调试输出("成功通过遍历节点找到并点击输入框入口")
    end
    
    cr.等待(2000)  -- 等待输入框完全加载
    
    -- 在输入框中输入内容
    lrSDK.日志类_调试输出("尝试在输入框中输入文本：" .. 评论内容)
    local 输入框 = depth(current_app.elements.input_field.depth)
                :className(current_app.elements.input_field.class_name)
                :packageName(current_app.package_name)
    
    -- 尝试使用遍历节点找到输入框
    local 输入框节点 = lrSDK.节点类_遍历节点(输入框)
    if 输入框节点 then
        lrSDK.日志类_调试输出("成功通过遍历节点找到输入框")
        local 输入结果 = lrSDK.输入类_节点输入内容(输入框节点, 评论内容, false, 2000)
        if not 输入结果 then
            lrSDK.日志类_调试输出("通过遍历节点输入文本失败，尝试使用找节点方式")
            输入结果 = lrSDK.输入类_节点输入内容(输入框, 评论内容, false, 2000)
            if not 输入结果 then
                lrSDK.日志类_调试输出("输入文本失败")
                -- 尝试关闭输入框
                lrSDK.触控类_模拟物理按键(4)  -- 使用返回键
                cr.等待(1000)
                return false
            end
        end
    else
        lrSDK.日志类_调试输出("未能通过遍历节点找到输入框，尝试直接使用找节点方式")
        local 输入结果 = lrSDK.输入类_节点输入内容(输入框, 评论内容, false, 2000)
        if not 输入结果 then
            lrSDK.日志类_调试输出("输入文本失败")
            -- 尝试关闭输入框
            lrSDK.触控类_模拟物理按键(4)  -- 使用返回键
            cr.等待(1000)
            return false
        end
    end
    
    lrSDK.日志类_调试输出("成功输入文本")
    cr.等待(1000)
    
    -- 点击发表按钮
    lrSDK.日志类_调试输出("尝试点击发表按钮")
    local 发表按钮 = className(current_app.elements.publish_button.class_name)
                  :packageName(current_app.elements.publish_button.packageName)
                  :text(current_app.elements.publish_button.text)
    
    -- 先尝试遍历节点点击发表按钮
    local 发表结果 = lrSDK.节点类_遍历节点点击(发表按钮)
    if not 发表结果 then
        lrSDK.日志类_调试输出("未通过遍历节点找到发表按钮，尝试使用找节点方式")
        发表结果 = lrSDK.节点类_找节点(发表按钮, true, 2000)
        
        if not 发表结果 then
            lrSDK.日志类_调试输出("未找到发表按钮，尝试使用返回键关闭输入框")
            lrSDK.触控类_模拟物理按键(4)  -- 使用返回键
            cr.等待(1000)
            return false
        end
    else
        lrSDK.日志类_调试输出("成功通过遍历节点找到并点击发表按钮")
    end
    
    lrSDK.日志类_调试输出("成功发表评论")
    cr.等待(1000)
    
    -- 评论发送后点击返回
    lrSDK.日志类_调试输出("评论发表后返回视频页面")
    lrSDK.触控类_模拟物理按键(4)  -- 使用返回键
    cr.等待(1000)
    
    return true
end

return comment 